package com.cw.jeeyt.dao.impl.system;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import com.cw.jeeyt.dao.intf.system.SystemTableInfoDao;
import com.cw.jeeyt.dao.mapper.system.SystemTableInfoMapper;
import com.cw.jeeyt.dao.model.system.SystemTableInfoDo;
import com.cw.lang.common.utils.PageUtil;
import com.cw.lang.common.pagehelper.PageHelper;
import com.cw.lang.mybatis.dto.PageInfo;

/**
 * 表模型信息 dao数据库操作接口
 * @author chenw
* @version 1.0.0
 */
@Repository
public class SystemTableInfoDaoImpl implements SystemTableInfoDao {
    @Autowired
    private SystemTableInfoMapper systemTableInfoMapper;

    /**
     * 查询所有表模型信息
     *
     * @return 表模型信息集合
     */
    @Override
    public List<SystemTableInfoDo> querySystemTableInfoList() {
        return systemTableInfoMapper.querySystemTableInfoList();
    }

    /**
     * 删除表模型信息
     *
     * @param systemTableInfo
     */
    @Override
    public void deleteSystemTableInfo(SystemTableInfoDo systemTableInfo) {
        systemTableInfoMapper.deleteSystemTableInfo(systemTableInfo);
    }

    /**
     * 修改表模型信息
     *
     * @param systemTableInfo
     */
    @Override
    public void updateSystemTableInfo(SystemTableInfoDo systemTableInfo) {
        systemTableInfoMapper.updateSystemTableInfo(systemTableInfo);
    }

    /**
     * 根据主键查询表模型信息
     *
     * @param id 主键id
     * @return SystemTableInfo
     */
    @Override
    public SystemTableInfoDo getSystemTableInfoById(String id) {
        return systemTableInfoMapper.getSystemTableInfoById(id);
    }

    /**
     * 新增表模型信息
     *
     * @param systemTableInfo
     * @return 整数
     */
    @Override
    public Integer insertSystemTableInfo(SystemTableInfoDo systemTableInfo) {
        return systemTableInfoMapper.insertSystemTableInfo(systemTableInfo);
    }

    /**
     * 分页查询表模型信息
     *
     * @param systemTableInfo 查询条件
     * @param startNum 开始条数
     * @param pageSize 每页长度
     * @return SystemTableInfo集合
     */
    @Override
    public PageInfo<SystemTableInfoDo> queryByPage(SystemTableInfoDo systemTableInfo, Integer startNum,
        Integer pageSize) {
        PageHelper.startPage(PageUtil.calPageNum(startNum, pageSize), pageSize);
        return new PageInfo<>(systemTableInfoMapper.queryByPage(systemTableInfo));
    }

    /**
     * 更新表模型中的主键id
     *
     * @param tableId 表模型id
     * @param pkId 表模型主键id
     * @throws Exception
     */
    @Override
    public void updatePkId(String tableId, Long pkId, String columnType) {
        systemTableInfoMapper.updatePkId(tableId, pkId, columnType);
    }

    /**
     * 查询模块下的表模型信息
     *
     * @param moduleId 模块id
     * @return
     * @throws Exception
     */
    @Override
    public List<SystemTableInfoDo> queryListByModuleId(String moduleId) {
        return systemTableInfoMapper.queryListByModuleId(moduleId);
    }

    /**
     * 根据表前缀删除表模型信息
     *
     * @param tablePrefix
     */
    @Override
    public void deleteByTableCodePrefix(String tablePrefix, String modulePrefix) {
        systemTableInfoMapper.deleteByTableCodePrefix(tablePrefix, modulePrefix);
    }
}
